from common.Utils import SHPDriver
from Shopping_Home import HomePage               # 首页测试类
from Shopping_Register import Register           # 注册测试类
from Shopping_Log import Login                   # 登录测试类
from Shopping_Personal import ShoppingBackground # 个人中心测试类
from Shopping_CategoryPage import CategoryPage   # 分类页测试类
from Shopping_ProductPage import ProductPage     # 商品详情页测试类
from Shopping_FavoritesPage import FavoritesPage # 收藏页测试类
from Shopping_CartPage import CartPage           # 购物车测试类


def main():
    # 初始化浏览器（确保全局唯一驱动）
    driver = SHPDriver.driver

    try:
        # 1. 首页测试（未登录+登录状态）
        print("===== 开始首页测试 =====")
        home = HomePage()
        home.HomePageTest1()  # 首页元素检查（未登录）
        home.HomePageTest2()  # 首页功能操作（未登录）
        home.HomePageTest3()  # 首页功能操作（登录后）
        print("===== 首页测试完成 =====")

        # 2. 注册功能测试
        print("\n===== 开始注册测试 =====")
        register = Register()
        register.RegisterTest0()  # 空数据注册
        register.RegisterTest1()  # 已存在用户注册
        register.RegisterTest2()  # 正常注册（注意：若注册成功，后续登录需用新账号）
        print("===== 注册测试完成 =====")

        # 3. 登录功能测试
        print("\n===== 开始登录测试 =====")
        login = Login()
        login.LoginTest0()  # 空数据登录
        login.LoginTest1()  # 错误账号密码
        login.LoginTest2()  # 正确账号+错误密码
        login.LoginTest3()  # 成功登录（使用正确账号）
        print("===== 登录测试完成 =====")

        # 4. 个人中心测试（需先登录）
        print("\n===== 开始个人中心测试 =====")
        user_center = ShoppingBackground()
        user_center.personal_centerTest1()  # 个人中心功能（修改头像、资料等）
        print("===== 个人中心测试完成 =====")

        # 5. 商品分类测试
        print("\n===== 开始商品分类测试 =====")
        category = CategoryPage()
        category.categoryTest1()  # 分类浏览、筛选等操作
        print("===== 商品分类测试完成 =====")

        # 6. 商品详情页测试
        print("\n===== 开始商品详情页测试 =====")
        product = ProductPage()
        product.productpageTest1()  # 查看详情、加入购物车、收藏等
        print("===== 商品详情页测试完成 =====")

        # 7. 收藏页测试
        print("\n===== 开始收藏页测试 =====")
        favorites = FavoritesPage()
        favorites.favoritesTest1()  # 查看收藏、取消收藏等
        print("===== 收藏页测试完成 =====")

        # 8. 购物车测试
        print("\n===== 开始购物车测试 =====")
        cart = CartPage()
        cart.cartTest1()  # 查看购物车、修改数量、删除商品等
        print("===== 购物车测试完成 =====")

    except Exception as e:
        # 测试过程中出现异常时截图并打印错误
        SHPDriver.GetScreenShot("test_exception")
        print(f"测试过程中出现错误：{str(e)}")
    finally:
        # 所有测试结束后关闭浏览器
        SHPDriver.quit_driver()
        print("\n所有测试用例执行完毕，浏览器已关闭")


# 执行入口
if __name__ == "__main__":
    main()